// 目标是创建一个能够接收http请求并且响应http请求的 服务器

// 1 引入http模块（内置的模块）；

const http = require('http');
// 2. 调用createServer方法，创建服务,会有返回值，返回值就是创建的服务
//     create 创建   server 服务
//  request => 请求，数据类型是一个对象，可以获取【请求报文中的信息】
//  response=> 响应，数据类型也是对象， 可以设置【响应报文信息】
// createServer参数是一个回调函数。该回调函数，当接收到浏览器端的http请求的时候会调用

const server = http.createServer((request, response)=>{

    // 解决中文乱码，需要设置响应头，告诉浏览器，按什么规则什么字符集进行解析 
    // 使用 response.setHeader 可以设置响应头
    response.setHeader('content-type','text/html;charset=utf-8');
    // response.end =》 设置响应体
    response.end('<h1>hello world! 你好，雪琴</h1>');
})

// 3. 设置服务器的监听端口，进行 http请求的监听  
//listen方法就是监听函数，
//第一个参数就是端口号
// 第二个参数是回调函数。服务器成功启动会自动执行
server.listen(8080,()=>{// http://127.0.0.1:8080
    console.log('服务器启动在 1000000端口');
})

// 如何访问到怎们的服务呢？
// 当前是在本地电脑运行的，所以ip地址就是本地电脑。http://127.0.0.1:80

// 如果修改了服务器端的代码，需要停掉当前的服务【ctrl + c】，重新运行，才能拿到最新的结果

// 常见错误：
//1， EADDRINUSE: address already in use :::80
//给定地址已被使用  地址     已经   在  使用   80端口
// 解决办法：
// 1. 关闭原来的服务
// 2. 让服务运行在新的端口